home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FM Towns: Free Software Collection 11
/
FM Towns Free Software Collection 11.iso
/
t_os
/
game
/
zinzo
/
zinzo1.bas
< prev
Wrap
BASIC Source File
|
1995-08-20
|
11KB
|
314 lines
1000 '゚・.*・゚:.・*゚・.*・゚:.・*゚・.*・゚:.・*゚・.*・゚:.・*゚・.*・゚:.・*゚・.*・゚:.・*゚・.*・゚:
1010 '゚・.*・゚: ゚・.*・゚:
1020 '゚・.*・゚: すみたあきのじんぞういっこください ゚・.*・゚:
1030 '゚・.*・゚: -game version from Free Software Collection 11- ゚・.*・゚:
1040 '゚・.*・゚: ゚・.*・゚:
1050 '゚・.*・゚: A.Sumita(KGH07252) ゚・.*・゚:
1060 '゚・.*・゚:.・*゚・.*・゚:.・*゚・.*・゚:.・*゚・.*・゚:.・*゚・.*・゚:.・*゚・.*・゚:.・*゚・.*・゚:
1070 '_____>seting & read
1080 COLOR 7,0 : SCREEN@ 0 : CLEAR ,,5000,600000:CLS :RANDOMIZE TIME/3
1085 DIM Q_DAT$(2000),QQ(50),Q_BUF$(1000)
1090 DIM ODAT#(25000),F#(800),MAIN_CG#(20000),EUMU#(10000)
1100 DIM BUFF#(1000),LO$(30),INF$(70),MEEE#(200)
1110 FX=150:FX2=485:FY=285:LI=0:W=0:FX1=FX
1120 PALETTE 1,[0,0,0]:PLAY OFF
1130 SYMBOL(201,201),"Now loading...",1,1,%1,,,,4
1140 FOR I=0 TO 255
1150 PALETTE 1,[I,I,I]
1160 NEXT
1170 LOAD@ "opencg.dat" ,ODAT#
1180 'LOAD@ "object.dat",OBJ#
1190 LOAD@ "fuki2.dat",F#
1200 LOAD@ "main.dat",MAIN_CG#
1210 LOAD@ "open.eup",EUMU#
1220 '_____>opening
1230 SCREEN@ 1: CLS
1240 FOR I=0 TO 20000 STEP 5000
1250 PUT@A (80,60)-(240,180),ODAT#,,,,,I
1260 WAIT 13
1270 NEXT
1280 MES$="SUMITA AKI NO 'ZINZO'IKKO KUDASAI@"
1290 MX=20 : MY=155 : GOSUB *MES1
1300 MES$="PRESENTED BY A.SUMITA$"
1310 MX=67 : MY=175 : GOSUB *MES1 :GOTO 1470
1320 '_____>mesaegu1
1330 *MES1
1340 C=1
1350 P$=KMID$(MES$,C,1)
1360 IF P$="@" THEN PLAY "@75]]]]T30L50-C&BC[[[[":WAIT 50:RETURN
1370 IF P$="$" THEN RETURN
1380 IF P$=" " THEN 1460
1390 SYMBOL(MX+C*8-1,MY-1),P$,1,.5!,0
1400 SYMBOL(MX+C*8+1,MY-1),P$,1,.5!,0
1410 SYMBOL(MX+C*8+1,MY+1),P$,1,.5!,0
1420 SYMBOL(MX+C*8-1,MY+1),P$,1,.5!,0
1430 SYMBOL(MX+C*8 ,MY ),P$,1,.5!,7
1440 PLAY "@75T280L300A":WAIT 4
1450 C=C+1 : GOTO 1350
1460 C=C+1 : PLAY "@71T280L300A":WAIT 4 : GOTO 1350
1470 '
1480 'OPENING2
1490 WAIT 100
1500 FOR I=0 TO 255 STEP 20
1510 LINE(0,0)-(640,480),OR,[I,I,I],BF
1520 NEXT
1530 *OPEN2
1540 SCREEN@ 0
1550 CLS:LOAD@ "OPENING2.TIF" : PLAY@ EUMU#,1
1560 'マウスの初期化・形状設定・表示
1570 MOUSE 0
1580 A$=CHR$(&H1F,&HFF,&H07,&HFF,&H00,&HFF,&H80,&H3F,&H80,&H1F,&HC0,&H1F,&HC0,&H1F,&HC0,&H1F,&HE0,&H2F,&HE0,&H87,&HF0,&H83,&HFF,&H07,&HFF,&H8F,&HFF,&HDF,&HFF,&HFF,&HFF,&HFF)
1590 B$=CHR$(&H00,&H00,&H40,&H00,&H30,&H00,&H2E,&H00,&H17,&H80,&H17,&HC0,&H17,&HC0,&H0B,&H80,&H0B,&H80,&H06,&H10,&H00,&H38,&H00,&H70,&H00,&H20)
1600 MOUSE 2,A$,B$,0,0
1610 MOUSE 1,550,430,1:PALETTE 15,[255,255,255]
1620 F=-1:FF=F
1630 WHILE MOUSE(2,0)=0
1640 X=MOUSE(0):Y=MOUSE(1)
1650 IF X>213 AND X<383 AND Y>117 AND Y<143 THEN FF=F:F=0:GOSUB*HAKO
1660 IF X>213 AND X<383 AND Y>157 AND Y<183 THEN FF=F:F=1:GOSUB*HAKO
1670 IF X>213 AND X<383 AND Y>197 AND Y<223 THEN FF=F:F=2:GOSUB*HAKO
1680 IF X>213 AND X<383 AND Y>237 AND Y<263 THEN FF=F:F=3:GOSUB*HAKO
1690 WEND:GOTO 1760
1700 *HAKO
1710 IF F=FF THEN RETURN
1720 IF FF=-1 THEN 1740
1730 LINE(213,117+FF*40)-(383,143+FF*40),XOR,%2,BF
1740 LINE(213,117+F*40)-(383,143+F*40),XOR,%2,BF
1750 RETURN
1760 X1=MOUSE(4,0)
1770 Y1=MOUSE(5,0)
1780 IF X1>213 AND X1<383 AND Y1>117 AND Y1<143 THEN *GAME
1790 IF X1>213 AND X1<383 AND Y1>157 AND Y1<183 THEN *LOAD
1800 IF X1>213 AND X1<383 AND Y1>197 AND Y1<223 THEN *INFO
1810 IF X1>213 AND X1<383 AND Y1>237 AND Y1<263 THEN END
1820 GOTO 1630
1830 '------------------------------------------------------------------
1840 *GAME
1850 CLS:LOAD@ "haike5.tif":ON MOUSE(4) GOSUB *MEXIT:MOUSE(4) ON
1860 '変数を初期化する
1870 FX=150:FX2=485:FY=285:LI=0:W=0:FX1=FX
1880 'DIM BUFF#(1000),odat#(20000)
1890 GET@A(0,FY)-(640,FY+18),BUFF#
1900 '吹き出し
1910 GOTO 2180
1920 *AKI 'セリフを表示する
1925 MOUSE(4) OFF
1930 IF LI<>0 THEN PUT@A(0,FY-LI*18)-(640,FY),ODAT#
1940 PUT@A(0,FY)-(640,FY+18),BUFF#
1950 LINE(FX2-10,FY+18)-(FX2+19,FY+39),PSET,%0,BF
1960 LINE(FX-10,FY+18)-(FX+19,FY+39),PSET,%0,BF
1970 MO=KLEN(AKI$):MD=LEN(AKI$)
1980 X=INT(FX1-MD/2*8-7):IF X<0 THEN X=0
1990 IF W=1 THEN X=INT(FX1+MD/2*8+7):IF X>640 THEN X=640
2000 'xxx=
2010 PUT@A(X-W*7,FY)-(X+7-W*7,FY+18),F#,MATTE,,,%15,W*400
2020 PUT@A(FX1-9,FY)-(FX1+10,FY+39),F#,MATTE,,,%15,200+W*300
2030 LINE(X+7-W*14,FY)-(X+7+MD*8-W*(MD*8*2+14),FY+17),PSET,%(4+W*2),BF
2040 PUT@A(X+7+MD*8-W*(MD*8*2+14+7),FY)-(X+7+MD*8+7-W*(MD*8*2+14+7),FY+18),F#,MATTE,,,%15,100+W*200
2050 SYMBOL(X+7-W*(7+MD*8+7),FY+1),AKI$,1,1,%15
2060 LI=LI+1:IF LI=15 THEN LI=14
2070 GET@A(0,FY-(LI-1)*18)-(640,FY+18),ODAT#
2080 'LI=LI+1:IF LI=15 THEN LI=14
2090 'PUT@A(0,300)-(640,318),odat#
2100 'クリック待ち
2110 ON MOUSE(2) GOSUB 2160:MOUSE(2) ON
2120 SYMBOL(315,335),"▼",1,1,%7
2130 SYMBOL(313,333),"▼",1,1,%15:WAIT 30
2140 LINE(313,333)-(335,353),PSET,%0,BF:WAIT 30
2150 GOTO 2120
2160 MOUSE(2) OFF:LINE(313,333)-(335,353),PSET,%0,BF:RETURN 2170
2170 MOUSE(4) ON: RETURN
2180 'ゲームMAINルーチン
2190 *MAIN
2200 I=0:Q=32:J=1:JJ=0:JY=0:CONTI=0:SSSS=0:BGM 0
2210 OPEN "I", #1,"QUIZ.TXT"
2220 OPEN "I", #2,"GSTART.TXT"
2230 LOAD@ "qno2.DAT",QQ
2240 WHILE EOF(1)<>-1
2250 INPUT#1, Q_DAT$(I)
2260 I=I+1
2270 WEND
2280 I=0
2290 WHILE EOF(2)<>-1
2300 INPUT#2, Q_BUF$(I)
2310 I=I+1
2320 WEND
2330 CLOSE#1
2340 '■GSTART
2350 GCC=0:GCC$=" "
2360 WHILE GCC$<>"●"
2370 COME$=Q_BUF$(GCC):GCC$=KLEFT$(COME$,1)
2380 IF GCC$="●" THEN 2410
2390 GOSUB *COME
2400 GCC=GCC+1
2410 WEND
2420 '
2430 *MONDAI '問題!
2440 BGM 0:DRMS$="@16V15L15T200FFF.":
2450 BASE$="@25V4L15T200FFF.":PLAY BASE$,DRMS$:BGM 1
2460 PUT@A(0,0)-(640,480),MAIN_CG#:LI=0:J=1:JJ=0:JY=0:CONTI=0
2470 QZ=INT(RND*Q)+1
2480 A$=Q_DAT$(QQ(QZ))
2490 B$=" "
2500 WHILE B$<>"?"
2510 B$=KMID$(A$,J,1)
2520 SYMBOL(90+JJ*16 ,55+JY*16 ),B$,1,1,%7
2530 SYMBOL(90+JJ*16-1,55+JY*16-1),B$,1,1,%15
2540 J=J+1:JJ=JJ+1:IF JJ=30 THEN JJ=2:JY=JY+1
2550 WEND
2560 '問題表示
2570 ZQ=QQ(QZ):QH=0
2580 WHILE QH<>4
2590 ZQ=ZQ+1
2600 QP$=KMID$(Q_DAT$(ZQ),4)
2610 QL=LEN(QP$):IF QH=3 THEN QP$=MID$(Q_DAT$(ZQ),7,QL-2):QL=LEN(QP$)
2620 QX=320-QL*4
2630 SYMBOL(QX ,150+QH*30),QP$,1,1,%7
2640 SYMBOL(QX+1,151+QH*30),QP$,1,1,%15
2650 QH=QH+1
2660 WEND
2670 F=-1:FF=F
2680 WHILE MOUSE(2,0)=0
2690 X=MOUSE(0):Y=MOUSE(1)
2700 IF X>70 AND X<560 AND Y>149 AND Y<166 THEN FF=F:F=0:GOSUB*ANS
2710 IF X>70 AND X<560 AND Y>179 AND Y<196 THEN FF=F:F=1:GOSUB*ANS
2720 IF X>70 AND X<560 AND Y>209 AND Y<226 THEN FF=F:F=2:GOSUB*ANS
2730 IF X>70 AND X<560 AND Y>239 AND Y<256 THEN FF=F:F=3:GOSUB*ANS
2740 WEND:GOTO 2810
2750 *ANS
2760 IF F=FF THEN RETURN
2770 IF FF=-1 THEN 2790
2780 LINE(70,149+FF*30)-(560,149+FF*30+19),XOR,%2,BF
2790 LINE(70,149+F*30)-(560,149+F*30+19),XOR,%2,BF
2800 RETURN
2810 X1=MOUSE(4,0)
2820 Y1=MOUSE(5,0)
2830 IF X1>70 AND X1<560 AND Y1>149 AND Y1<166 THEN ANS=0:GOTO 2880
2840 IF X1>70 AND X1<560 AND Y1>179 AND Y1<196 THEN ANS=1:GOTO 2880
2850 IF X1>70 AND X1<560 AND Y1>209 AND Y1<226 THEN ANS=2:GOTO 2880
2860 IF X1>70 AND X1<560 AND Y1>239 AND Y1<256 THEN ANS=3:GOTO 2880
2870 GOTO 2680
2880 ZQ=ZQ+1
2890 COME$=Q_DAT$(ZQ)
2900 IF KLEFT$(COME$,2)="1:" THEN IF ANS=0 THEN *COMEST
2910 IF KLEFT$(COME$,2)="2:" THEN IF ANS=1 THEN *COMEST
2920 IF KLEFT$(COME$,2)="3:" THEN IF ANS=2 THEN *COMEST
2930 IF KLEFT$(COME$,2)="4:" THEN IF ANS=3 THEN *COMEST
2940 GOTO 2880
2950 '
2960 *COMEST
2970 COME$=KMID$(COME$,3):CONTI=0:PUT@A(0,0)-(640,480),MAIN_CG#
2980 GOSUB *COME
2990 ZQ=ZQ+1
3000 COME$=Q_DAT$(ZQ):TT=LEN(COME$)
3010 IF KMID$(COME$,2,1)=":" THEN *MONDAI
3020 IF KRIGHT$(COME$,1)="○" THEN COME$=MID$(COME$,1,TT-2):GOSUB *COME:GOTO *MONDAI
3030 GOTO 2980
3040 '
3050 *COME
3060 IF KLEFT$(COME$,1)="秋" THEN COME$=KMID$(COME$,3):GOSUB*AS :RETURN
3070 IF KLEFT$(COME$,1)="ア" THEN COME$=KMID$(COME$,3):GOSUB*AS2:RETURN
3080 IF CONTI=1 THEN GOSUB *AS:RETURN ELSE IF CONTI=2 THEN GOSUB*AS2:RETURN
3090 SYMBOL(300,300),COME$,1,1,%15
3100 RETURN
3110 *AS
3120 TT=LEN(COME$)
3130 IF CONTI=1 THEN GOSUB *CONTI
3140 AKI$=COME$:IF KRIGHT$(AKI$,1)="」" THEN CONTI=0:AKI$=MID$(AKI$,1,TT-2):COME$=AKI$ ELSE CONTI=1
3150 TT=LEN(AKI$)
3160 IF TT>78 THEN AKI$=LEFT$(COME$,78):COME$=MID$(COME$,79):TT=LEN(COME$):W=0:FX1=FX:GOSUB *AKI:AKI$=COME$
3170 GOTO 3190
3180 W=0:FX1=FX:GOSUB *AKI:TT=LEN(COME$)
3190 IF TT>78 THEN AKI$=LEFT$(COME$,78):COME$=MID$(COME$,79):GOTO 3180 ELSE AKI$=COME$
3200 IF CONTI=0 THEN W=0:FX1=FX:GOSUB*AKI:RETURN
3210 CONTI$=COME$
3220 RETURN
3230 *CONTI
3240 T1=LEN(CONTI$):T2=LEN(COME$)
3250 IF (T1+T2)<79 THEN CONTI=0:COME$=CONTI$+COME$
3260 T3=78-T1:COME2$=MID$(COME$,T3+1):COME$=CONTI$+LEFT$(COME$,T3)
3270 'IF CONTI=1 THEN GOSUB *AS ELSE GOSUB *AS2
3280 CONTI$=COME2$
3290 RETURN
3300 *AS2
3310 TT=LEN(COME$)
3320 IF CONTI=2 THEN GOSUB *CONTI
3330 AKI$=COME$:IF KRIGHT$(AKI$,1)="」" THEN CONTI=0:AKI$=MID$(AKI$,1,TT-2):COME$=AKI$ ELSE CONTI=2
3340 TT=LEN(AKI$)
3350 IF TT>78 THEN AKI$=LEFT$(COME$,78):COME$=MID$(COME$,79):TT=LEN(COME$):W=1:FX1=FX2:GOSUB *AKI:AKI$=COME$
3360 GOTO 3380
3370 W=1:FX1=FX2:GOSUB *AKI:TT=LEN(COME$)
3380 IF TT>78 THEN AKI$=LEFT$(COME$,78):COME$=MID$(COME$,79):GOTO 3370 ELSE AKI$=COME$
3390 IF CONTI=0 THEN W=1:FX1=FX2:GOSUB*AKI:RETURN
3400 CONTI$=COME$
3410 RETURN
3420 '===================================================================
3430 *LOAD
3440 PLAY OFF:CLS:LOAD@ "HAIKE5.TIF"
3450 GET@A(0,FY)-(640,FY+18),BUFF#
3460 OPEN "I", #3,"LOAD.TXT"
3470 I=0
3480 WHILE EOF(3)<>-1
3490 INPUT#3, LO$(I)
3500 I=I+1
3510 WEND
3520 CLOSE#3
3530 GCC=0:GCC$=" "
3540 WHILE GCC$<>"●"
3550 COME$=LO$(GCC):GCC$=KLEFT$(COME$,1)
3560 IF GCC$="●" THEN 3590
3570 GOSUB *COME
3580 GCC=GCC+1
3590 WEND:LI=0
3600 MOUSE 1:GOTO *OPEN2
3610 *INFO
3620 PLAY OFF:MOUSE 1:LOAD@ "INF.TIF":GET@A(0,0)-(640,480),ODAT#
3630 OPEN "I", #1,"INFO.TXT"
3640 I=0
3650 WHILE EOF(1)<>-1
3660 INPUT#1, INF$(I)
3670 I=I+1
3680 WEND
3690 CLOSE#1
3700 GCC=0:GCC$=" ":IX=0:IY=1
3710 WHILE GCC$<>"●"
3720 COME$=INF$(GCC):GCC$=KLEFT$(COME$,1)
3730 IF GCC$="●" THEN 3810
3740 IL=LEN(COME$):IX=(320-IL/2*8)
3750 SYMBOL(IX+1,IY*30+1+30),COME$,1,1,%0
3760 SYMBOL(IX+1,IY*30-1+30),COME$,1,1,%0
3770 SYMBOL(IX-1,IY*30+1+30),COME$,1,1,%0
3780 SYMBOL(IX-1,IY*30-1+30),COME$,1,1,%0
3790 SYMBOL(IX,IY*30+30),COME$,1,1,%15:WAIT 180
3800 GCC=GCC+1:IY=IY+1:IF IY=14 THEN IY=0:PUT@A(0,0)-(640,480),ODAT#
3810 WEND
4440 PLAY OFF:LOAD@ "HAIKE5.TIF":MOUSE 0
4450 GET@A(0,FY)-(640,FY+18),BUFF#
4460 OPEN "I", #3,"info2.TXT"
4470 I=0
4480 WHILE EOF(3)<>-1
4490 INPUT#3, INF$(I)
4500 I=I+1
4510 WEND
4520 CLOSE#3
4530 GCC=0:GCC$=" "
4540 WHILE GCC$<>"●"
4550 COME$=INF$(GCC):GCC$=KLEFT$(COME$,1)
4560 IF GCC$="●" THEN 4590
4570 GOSUB *COME
4580 GCC=GCC+1
4590 WEND:LI=0
4600 MOUSE 1:GOTO *OPEN2
5000 *MEXIT
5010 MMX=MOUSE(0):IF MMX>590 THEN MMX=590
5015 MMY=MOUSE(1):IF MMX>430 THEN MMX=430
5020 GET@A(MMX,MMY)-(MMX+50,MMY+50),MEEE#
5030 LINE(MMX,MMY)-(MMX+50,MMY+50),PSET,%15,BF,%0
5040 SYMBOL(MMX+10,MMY+10),"キャンセル",.5!,.5!,%15
5060 SYMBOL(MMX+10,MMY+30),"EXIT",.5!,.5!,%15
5070 WHILE MOUSE(2,0)=0:WEND
5080 MXX=MOUSE(0):MYY=MOUSE(1)
5090 IF MXX>=MMX AND MXX<=MMX+50 AND MYY>=MMY AND MYY<=MMY+25 THEN PUT@A(MMX,MMY)-(MMX+50,MMY+50),MEEE#:RETURN
5100 IF MXX>=MMX AND MXX<=MMX+50 AND MYY>=MMY+25 AND MYY<=MMY+50 THEN MOUSE(4) OFF:END
5200 GOTO 5070